﻿#include "CasoDePrueba.h"
#include "PruebaMemoria.h"
#include "ConductorPrueba.h"
#include "Sistema.h"
#include "ICiudad.h"
#include "Ciudad.h"


Puntero<ISistema> Inicializar(nat VELOCIDAD_OMNIBUS, nat VELOCIDAD_AVION, nat COSTO_OMNIBUS, nat COSTO_AVION, nat CAPACIDAD_OMNIBUS, nat CAPACIDAD_AVION, nat MAX_CIUDADES, nat MAX_EXCURSIONES)
{
	return new Sistema(VELOCIDAD_OMNIBUS, VELOCIDAD_AVION, COSTO_OMNIBUS, COSTO_AVION, CAPACIDAD_OMNIBUS, CAPACIDAD_AVION, MAX_CIUDADES, MAX_EXCURSIONES);
}

void main()
{
	Puntero<ConductorPrueba> cp = new ConductorPrueba();
	Array<Puntero<Prueba>> pruebas = Array<Puntero<Prueba>>(3);
	pruebas[0] = new PruebaMemoria();
	pruebas[1] = new CasoDePrueba(Inicializar);
	pruebas[2] = pruebas[0];
	cp->CorrerPruebas(pruebas.ObtenerIterador());
	

	/*Puntero<Sistema> s= new Sistema(100,500,120,2000,30,90,50,40);

	Array<Cadena> ciudades = Array<Cadena>(6);

	ciudades[0] = "Montevideo";
	ciudades[1] = "Punta del Este";
    ciudades[2] = "Buenos Aires";
	ciudades[3] = "Rio de Janeiro";
	ciudades[4] = "Miami";
	ciudades[5] = "San Francisco";

	for(int i = 0; i<ciudades.Largo ; i++){
		s->IngresoCiudad(ciudades[i]);
	}
	
	//Error
	s->IngresoCiudad(ciudades[0]);
	s->IngresoCiudad(ciudades[2]);

	s->IngresoAtraccion("P12", "Palacio Legislativo", 10, 17, ciudades[0], 10);
	s->IngresoAtraccion("P34", "Palacio Salvo", 12, 20, ciudades[0], 15);
	s->IngresoAtraccion("T11", "Torre de las Comunicaciones", 13, 18, ciudades[0], 5);
	s->IngresoAtraccion("P56", "Parador de Playa los dedos", 9, 19, ciudades[1], 18);
	s->IngresoAtraccion("P78", "Parador de Playa El Emir", 0, 17, ciudades[1], 10);
	s->IngresoAtraccion("T55", "Torre Eiffel", 8, 23, ciudades[2], 30);
	
	s->IngresoCiudad("Montevideo");
	s->IngresoCiudad("Punta del Este");
	s->IngresoCiudad("Rocha");
	s->IngresoCiudad("La Paloma");

	s->IngresoAtraccion("P12", "Palacio Legislativo", 10, 17, ciudades[0], 10);
	s->IngresoAtraccion("P13", "Palacio Legislativo", 10, 17, "Yo que se", 10);
	
*/
	//s->CalificarAtraccion(334, "P12", -2, "Bastante Malo");
	//s->CalificarAtraccion(336, "P12", -4, "Wow, que malo");	
	//s->CalificarAtraccion(126, "T55", 4, "Encaro la torre");

	////Error
	//s->CalificarAtraccion(336, "P12", 6, "Wow, que malo");
	//s->CalificarAtraccion(336, "P99", 0, "Wow, que malo");

	//s->AltaConexion(ciudades[0], ciudades[1], 344, 2, 3);
	//s->AltaConexion(ciudades[0], ciudades[1], 88, 0, 32);
	////s->AltaConexion(ciudades[1], ciudades[2], 400, 1, 0);
	//
	//
	//Tupla<TipoRetorno, Iterador<Tupla<Cadena, Cadena, TipoTransporte, nat>>> esperado;
	//esperado = s->Transportes();

//<<<<<<< .mine
//=======
//	s->AltaConexion(ciudades[0], ciudades[1], 344, 2, 3);
//	s->AltaConexion(ciudades[0], ciudades[1], 88, 0, 32);
//	s->AltaConexion(ciudades[2], ciudades[4], 88, 0, 32);
//	s->AltaConexion(ciudades[2], ciudades[4], 88, 900, 32);
//	s->AltaConexion(ciudades[4], ciudades[2], 88, 0, 2);
//	s->AltaConexion(ciudades[4], ciudades[2], 88, 0, 4);
//	
//	s->AltaConexion(ciudades[4], ciudades[2], 88, 0, 0);
//	
//
//	//s->AltaConexion(ciudades[1], ciudades[2], 400, 1, 0);
//	
//	
//	Tupla<TipoRetorno, Iterador<Tupla<Cadena, Cadena, TipoTransporte, nat>>> esperado;
//	esperado = s->Transportes();
//
////>>>>>>> .r39
}
